1 ! ADVENTURE-SERIE                  5 B                      WARLOCK II
10 CALL CLEAR :: CALL MAGNIFY(3) :: CALL SCREEN(2) :: DIM TX$(17)
20 FOR I=33 TO 43
30 READ Q$
40 CALL CHAR(I,Q$) :: NEXT I
50 FOR I=58 TO 143
60 READ Q$
70 CALL CHAR(I,Q$) :: NEXT I
80 DATA 007EC3BEC37DC37E,007EC39E909EC37E,007EC399A599C37E,00FE83BD83B6BAEE,00FF81BF84BF81FF,00E0A0A0A0BF81FF
90 DATA 007E42662466427E,00E7A5BD99C3663C,E0B79D8DA5B9ADE7,007EC3BDBFB1C37E,00775D6B366C587,0202070707070707
100 DATA 0,0,0,0,0,0001070E0E1F1D17,7EDFFBBFADFFBBFF,0080F07CACFEBAEE,1F3D6FFBFEDF5D6F,FCBEF7FFADFD637F
110 DATA FFBDEFFB7FDEDEEC,3F191F1E0B0F0203,FEDADEBCE8F870C,0234355F7E6D3B3E,02211C077F001F,30309A9BDB7BFB07
120 DATA 99DBDE7C3B577C78,0606476F6F68707F,C0FFFE80F0F8,FF7F001F000703,7DFDFDFD3EFFFF3C,7E40FCF800F0E
130 DATA 8142221414D52E1C,1CCD2E1C1D7F8E8C,7C82798400F008,0,0,0,0,7E766E6E6E767E7A,7A7A767EFF504C83
140 DATA 00000000011E6083,0000000080780683,0,0,0,0,071D3F777F6E793F,0000000E377DCFFF,0000006CFCBEF7FF
150 DATA 000000003C2E7FFB,7E7E7E00E7E7E7,0,0,0,0001006619040201,0242A252D2AA5A3B,526262A292D2AAAB,0014285364A8D6A9
160 DATA AFAF5F5F3F3F3F3F,FCBEF7FFADFD637F,A8D35464A830F0F0,C0F0DC7EF6ECB8F,000304080810101F,0F1D3F3F0E090703
170 DATA 03E61C18F8E404FC,F8F8F8F8F8F8F0E,0307070707070707,0203030301070F07,C06060606060606,C0C0C0C080C0E0C
180 DATA 03070707170F0605,07070F0F061F3F1F,C060A0A0A060E0E,C2B77F7F770782,C06738181F27203F,1F1F1F1F1F1F0F07
190 DATA 00C02010100808F8,F0B8FCFC7090E0C,0306060606060606,0303030301030703,C0E0E0E0E0E0E0E,40C0C0C080E0F0E
200 DATA 0306050505060707,43EDFEFEEEE04100,C0E0E0E0E8F060A0,E0E0F0F060F8FCF8,0000000000003FFF,3F
210 DATA 000000001008FBFF,FB081,000000000810DFFF,DF1008,000000000000FCFF,FC,5,5,14,14,13,11,11,7,4,4
220 FOR I=1 TO 10
230 READ Q
240 CALL COLOR(I,Q,2) :: NEXT I
250 FOR I=2 TO 17
260 READ TX$(I)
270 NEXT I
280 DATA ;HFC;HFAC;C;;C;HF,KLIEDGIGIDEFHEDGBC,B;;HEDDF;B;IEDGHDG,HFHEFBIGKJJJJLHGIF,BIG;IDDDG;;;;KLKJL
290 DATA KJJJJLIEDFC;CIDEDF,IDFC;KJJLIEDEDGKLB,HEEEDG;C;HFGKLHGC;,BKJJLHDGCIEDGHEDEF,HGKJJL@;IDFIDEFBKL
300 DATA IDEDDDFKJLBHEFBKLC,;BKLIGIG;;;IDEDEDG,;HEDFKJJJJJJLKLCBC,KLKLIG;;;;;;HEDGKL,BHEFKJJJJJJJLHEDEF
310 DATA ;B;IG;;;;;;;;B;B;B
320 DISPLAY AT(1,1):"&'(%05 %)%$*+100 ! #$%000000" :: CALL HCHAR(1,21,34)
330 SW=1 :: H=15 :: V=16 :: PU=1000000 :: EN=1100 :: LI=105 :: SP1=112 :: SP2=SP1 :: SP3=96 :: SP4=SP1
340 HO=11 :: VE=9 :: HA1=0 :: HA2=0 :: HA3=0 :: HA4=0 :: HA5=0 :: SI=1 :: CALL PUNKTE(PU)
350 CALL SPRITE(#1,116,2,SP1,SP2) :: CALL SPRITE(#2,112,2,SP3,SP4) :: GOTO 910
360 CALL LOCATE(#1,SP1,SP2) :: CALL LOCATE(#2,SP3,SP4) :: CALL COLOR(#1,15,#2,15)
370 IF PO=59 THEN 2190 :: CALL COINC(#1,#4,15,G) :: IF G=-1 THEN 1960 :: CALL COINC(#1,#5,15,G) :: IF G=-1 THEN 2080
380 CALL COINC(#1,#7,15,G) :: IF G=-1 THEN 2140 :: IF AS=0 THEN 440 :: IF R=1 THEN 400
390 R=R+1 :: CALL PATTERN(#5,84) :: GOTO 440
400 R=0 :: CALL PATTERN(#5,60)
410 CALL POSITION(#5,P1,P2) :: CALL POSITION(#1,P3,P4) :: R1=1 :: IF P1>P3 THEN R1=-1
420 R2=1 :: IF P2>P4 THEN R2=-1
430 CALL MOTION(#5,R1,R2)
440 CALL KEY(1,K,S) :: IF K=18 THEN 820 :: CALL DELSPRITE(#3)
450 CALL JOYST(1,X,Y) :: IF X=-4 THEN 460 :: IF X=4 THEN 540 :: IF Y=4 THEN 620 :: IF Y=-4 THEN 720 :: GOTO 370
460 T=0 :: H1=H :: H1=H1-1 :: CALL GCHAR(V,H1,PO) :: IF PO>32 THEN 370 :: H=H1 :: IF H<=2 THEN 860
470 SW=1 :: CALL PATTERN(#1,116,#2,112)
480 FOR I=1 TO 8
490 SP2=SP2-1 :: SP4=SP4-1 :: T=T+1 :: IF T=2 THEN 510
500 CALL PATTERN(#1,120) :: GOTO 520
510 CALL PATTERN(#1,116) :: T=0
520 CALL LOCATE(#1,SP1,SP2) :: CALL LOCATE(#2,SP3,SP4) :: NEXT I
530 GOTO 370
540 T=0 :: H1=H :: H1=H1+2 :: CALL GCHAR(V,H1,PO) :: IF PO>32 THEN 370 :: H=H1-1 :: IF H>=30 THEN 870
550 SW=2 :: CALL PATTERN(#1,128,#2,124)
560 FOR I=1 TO 8
570 SP2=SP2+1 :: SP4=SP4+1 :: T=T+1 :: IF T=2 THEN 590
580 CALL PATTERN(#1,132) :: GOTO 600
590 CALL PATTERN(#1,128) :: T=0
600 CALL LOCATE(#1,SP1,SP2) :: CALL LOCATE(#2,SP3,SP4) :: NEXT I
610 GOTO 370
620 T=0 :: V1=V :: V1=V1-4 :: CALL GCHAR(V1,H,PO) :: IF PO>32 THEN 370 :: V=V-1 :: IF V<=5 THEN 880
630 IF SW=1 THEN 650
640 R1=128 :: R2=132 :: GOTO 660
650 R1=116 :: R2=120
660 FOR I=1 TO 8
670 T=T+1 :: SP1=SP1-1 :: SP3=SP3-1 :: IF T=2 THEN 690
680 CALL PATTERN(#1,R2) :: GOTO 700
690 CALL PATTERN(#1,R1) :: T=0
700 CALL LOCATE(#1,SP1,SP2) :: CALL LOCATE(#2,SP3,SP4) :: NEXT I
710 GOTO 370
720 IF V>=24 THEN 890 :: T=0 :: V1=V :: V1=V1+1 :: CALL GCHAR(V1,H,PO) :: IF PO>32 THEN 370 :: V=V1 :: IF V>=24 THEN 890
730 IF SW=1 THEN 750
740 R1=128 :: R2=132 :: GOTO 760
750 R1=116 :: R2=120
760 FOR I=1 TO 8
770 T=T+1 :: SP1=SP1+1 :: SP3=SP3+1 :: IF T=2 THEN 790
780 CALL PATTERN(#1,R2) :: GOTO 800
790 CALL PATTERN(#1,R1) :: T=0
800 CALL LOCATE(#1,SP1,SP2) :: CALL LOCATE(#2,SP3,SP4) :: NEXT I
810 GOTO 370
820 CALL POSITION(#1,P1,P2) :: IF SW=2 THEN 840
830 CALL SPRITE(#3,136,11,P1,P2-10) :: GOTO 850
840 CALL SPRITE(#3,140,11,P1,P2+10)
850 CALL COINC(#3,#5,15,G) :: IF G=-1 THEN 2060 :: EN=EN+1 :: GOTO 2080
860 CALL POSITION(#1,P1,P2) :: H=30 :: SP1=P1 :: SP3=P1-16 :: SP2=232 :: SP4=232 :: VE=VE-1 :: GOTO 910
870 CALL POSITION(#1,P1,P2) :: H=2 :: SP1=P1 :: SP3=P1-16 :: SP2=8 :: SP4=8 :: VE=VE+1 :: GOTO 910
880 CALL POSITION(#1,P1,P2) :: V=24 :: SP2=P2 :: SP4=P2 :: SP1=176 :: SP3=160 :: HO=HO-1 :: GOTO 910
890 CALL POSITION(#1,P1,P2) :: V=5 :: SP2=P2 :: SP4=P2 :: SP1=24 :: SP3=8 :: HO=HO+1 :: GOTO 910
900 !
910 RT=0 :: AS=0 :: PL=0 :: SI=SI+1 :: CALL DELSPRITE(#3,#4,#5,#7) :: CALL COLOR(#1,1,#2,1)
920 FOR I=2 TO 24
930 DISPLAY AT(I,1):"" :: NEXT I
940 CALL COLOR(5,2,1) :: CALL COLOR(6,2,1)
950 FOR I=2 TO 17
960 DISPLAY AT(I,1):TX$(I) :: NEXT I
970 CALL GCHAR(HO,VE,PO) :: IF PO=70 THEN 1090 :: IF PO=71 THEN 1130 :: IF PO=72 THEN 1170 :: IF PO=73 THEN 1230
980 IF PO=64 THEN 1760 :: IF PO=68 THEN 1360 :: IF PO=69 THEN 1400 :: IF PO=74 THEN 1500 :: IF PO=75 THEN 1600
990 IF PO=76 THEN 1680 :: IF PO=66 THEN 1760 :: IF PO=67 THEN 1860 :: IF PO=65 THEN 1010
1000 GOTO 1000
1010 RESTORE 2390 :: GOSUB 2250
1020 FOR I=20 TO 24
1030 CALL HCHAR(I,15,32,4) :: NEXT I
1040 FOR I=2 TO 14
1050 DISPLAY AT(I,1):"dddddddddddddddddddddddddddd" :: NEXT I
1060 FOR I=8 TO 14
1070 CALL HCHAR(I,14,88,6) :: NEXT I
1080 IF HA5=4 THEN 2150 ELSE 360
1090 RESTORE 2320 :: GOSUB 2250
1100 FOR I=11 TO 14
1110 CALL HCHAR(I,3,32,16) :: NEXT I
1120 GOTO 1200
1130 RESTORE 2320 :: GOSUB 2250
1140 FOR I=11 TO 14
1150 CALL HCHAR(I,3,32,16) :: NEXT I
1160 GOTO 1260
1170 RESTORE 2320 :: GOSUB 2250
1180 FOR I=11 TO 14
1190 CALL HCHAR(I,15,32,16) :: NEXT I
1200 FOR I=15 TO 24
1210 CALL HCHAR(I,15,32,4) :: NEXT I
1220 GOTO 1320
1230 RESTORE 2320 :: GOSUB 2250
1240 FOR I=11 TO 14
1250 CALL HCHAR(I,15,32,16) :: NEXT I
1260 FOR I=2 TO 11
1270 CALL HCHAR(I,15,32,4) :: NEXT I
1280 GOTO 1320
1290 CALL CHAR(60,"0163FBEDF7DF8F1B330103020604040A80C6DFB7EFFBF1D8CC80C04060202050")
1300 CALL CHAR(84,"010303010F3F7F6B5B7123020604040A80C0C080F0FCFCD6DA8EC44060202050")
1310 RT=1 :: IF ZU>=4 AND ZU<=7 THEN 1850
1320 IF ZU<=2 THEN 1330 :: IF ZU>=8 THEN 1340 :: GOTO 360
1330 CALL CHAR(44,"F3F3FFE1E7EBEDFEFEFDFBF76F3F0F03CFCFFF87E7D7B77F7FBFDFEFF6FCF0C0") :: PU1=75 :: GOTO 1350
1340 CALL CHAR(44,"0F3F7C70FCFEFEC0D4D4D45E5E7E3F0FF0FC7E7E7F7F7F032B2B2B7B7A7EFCF0") :: PU1=50
1350 CALL SPRITE(#4,44,14,88,120) :: GOTO 360
1360 RESTORE 2320 :: GOSUB 2250
1370 FOR I=15 TO 24
1380 CALL HCHAR(I,15,32,4) :: NEXT I
1390 GOTO 1430
1400 RESTORE 2320 :: GOSUB 2250
1410 FOR I=2 TO 11
1420 CALL HCHAR(I,15,32,4) :: NEXT I
1430 FOR I=11 TO 14
1440 DISPLAY AT(I,1):"" :: NEXT I
1450 IF ZU<=3 THEN 1460 :: IF ZU>=7 THEN 1480 :: GOTO 360
1460 CALL CHAR(60,"0E3B7FCF17230303070E1C3973E7FE7C000080C0C0C08080000000C3E3763E1C")
1470 CALL SPRITE(#5,60,13,90,125,0,-4) :: GOTO 360
1480 CALL CHAR(60,"00000003071F7FFFFBFDFDFBF97C3E1F000000E0FCE7FEFCF8E1FFFEFCE07038")
1490 CALL SPRITE(#5,60,3,90,125,0,4) :: GOTO 360
1500 RESTORE 2460 :: GOSUB 2250
1510 FOR I=7 TO 10
1520 DISPLAY AT(I,1):"" :: NEXT I
1530 FOR I=16 TO 19
1540 DISPLAY AT(I,1):"" :: NEXT I
1550 CALL CHAR(60,"00070F1F377FFF8E751D0D0502020202000080C0F8FCFEFFF7EDD9D121202020")
1560 IF ZU>=4 THEN 1580
1570 CALL SPRITE(#5,60,7,132,125,0,-4) :: GOTO 360
1580 IF ZU<=6 THEN 360
1590 CALL SPRITE(#5,60,7,60,125,0,-4) :: GOTO 360
1600 RESTORE 2460 :: GOSUB 2250
1610 FOR I=7 TO 10
1620 DISPLAY AT(I,13):"" :: NEXT I
1630 FOR I=16 TO 19
1640 DISPLAY AT(I,13):"" :: NEXT I
1650 FOR I=7 TO 24
1660 CALL HCHAR(I,15,32,4) :: NEXT I
1670 GOTO 1290
1680 RESTORE 2460 :: GOSUB 2250
1690 FOR I=7 TO 10
1700 CALL HCHAR(I,3,32,16) :: NEXT I
1710 FOR I=16 TO 19
1720 CALL HCHAR(I,3,32,16) :: NEXT I
1730 FOR I=2 TO 19
1740 CALL HCHAR(I,15,32,4) :: NEXT I
1750 GOTO 1290
1760 RESTORE 2390 :: GOSUB 2250
1770 FOR I=2 TO 5
1780 CALL HCHAR(I,15,32,4) :: NEXT I
1790 IF HO=17 AND VE=4 THEN 1900 :: IF HO=17 AND VE=20 THEN 1910 :: IF HO=4 AND VE=12 THEN 1920 :: IF HO=12 AND VE=13 THEN 1930
1800 IF SI>=3 THEN 1810 :: SI=0 :: GOTO 360
1810 CALL CHAR(44,"0103070F3FF8C1C37B0B03030101000080C0E0F0FC1F83C3DEE0E0F0F0F8F870") :: PL=1
1820 CALL SPRITE(#4,44,5,100,125)
1830 CALL CHAR(60,"0000302C17180B0B1B133429675C30C0030D3AE6942CC8D8D0D018E8340C")
1840 CALL CHAR(84,"C0B05C672934131B0B0B18172C30000000000C34E81800D0D8C82C94E63A0D03")
1850 AS=1 :: SI=0 :: CALL SPRITE(#5,60,7,100,90) :: GOTO 360
1860 RESTORE 2390 :: GOSUB 2250
1870 FOR I=19 TO 24
1880 CALL HCHAR(I,15,32,4) :: NEXT I
1890 GOTO 1800
1900 IF HA1=1 THEN 360 :: HA1=1 :: GOTO 1940
1910 IF HA2=1 THEN 360 :: HA2=1 :: GOTO 1940
1920 IF HA3=1 THEN 360 :: HA3=1 :: GOTO 1940
1930 IF HA4=1 THEN 360 :: HA4=1
1940 CALL CHAR(44,"72721A1F0F1A1A323262626262323E0FA7A7ACFCF8ACACA6A6A3A3A3A3A6BEF8")
1950 CALL SPRITE(#7,44,11,100,125) :: GOTO 1830
1960 FOR I=1 TO 5
1970 CALL SOUND(-100,330*I,3) :: NEXT I
1980 CALL DELSPRITE(#4) :: IF PL=1 THEN 1990 :: PU=PU+PU1 :: CALL PUNKTE(PU) :: GOTO 370
1990 PU=PU+100 :: CALL PUNKTE(PU) :: EN=EN+50
2000 IF EN>=1250 THEN 2010 ELSE 2040
2010 EN=1125 :: LI=LI+1
2020 FOR I=1 TO 5
2030 CALL SOUND(100,220,4) :: CALL SOUND(100,440,3) :: NEXT I
2040 B$=STR$(EN) :: B1$=STR$(LI)
2050 DISPLAY AT(1,14)SIZE(3):SEG$(B$,2,3) :: DISPLAY AT(1,5)SIZE(2):SEG$(B1$,2,2) :: GOTO 370
2060 IF RT=1 THEN 2070 :: IF AS=1 THEN 370
2070 CALL DELSPRITE(#5) :: PU=PU+25 :: CALL PUNKTE(PU) :: EN=EN-3 :: GOTO 2080
2080 CALL SOUND(-100,130,2,110,4) :: EN=EN-2 :: IF EN<=1000 THEN 2090 :: B$=STR$(EN) :: DISPLAY AT(1,14)SIZE(3):SEG$(B$,2,3) :: GOTO 370
2090 FOR I=14 TO 1 STEP-1
2100 CALL COLOR(#1,I,#2,I) ::  :: CALL SOUND(150,440,I) :: NEXT I
2110  :: CALL DELSPRITE(#3,#5,#4) :: AS=0 :: EN=1100
2120 LI=LI-1 :: B$=STR$(EN) :: B1$=STR$(LI) :: DISPLAY AT(1,14)SIZE(3):SEG$(B$,2,3) :: DISPLAY AT(1,5)SIZE(2):SEG$(B1$,2,2)
2130 IF EN=1000 THEN 2240 :: IF LI>100 THEN 360 :: LI=101 :: EN=1000 :: GOTO 2120
2140 HA5=HA5+1 :: CALL DELSPRITE(#7) :: PU1=250 :: GOTO 1960
2150 FOR I=1 TO 300 :: NEXT I
2160 FOR I=14 TO 8 STEP-1
2170 CALL HCHAR(I,14,32,6) :: NEXT I
2180 DISPLAY AT(8,12)SIZE(6):";;;;;;" :: GOTO 360
2190 FOR I=3 TO 15
2200 CALL COLOR(#1,I,#2,I) :: CALL COLOR(1,I,2) :: CALL COLOR(2,I,2)
2210 CALL KEY(0,K,S) :: IF S=0 THEN 2220 ELSE 320
2220 NEXT I
2230 GOTO 2190
2240 CALL KEY(0,K,S) :: IF S=0 THEN 2240 :: GOTO 320
2250 FOR I=2 TO 24
2260 DISPLAY AT(I,1):"" :: NEXT I
2270 CALL COLOR(5,13,2) :: CALL COLOR(6,11,2) :: ZU=INT((9-1+1)*RND)+1
2280 FOR I=2 TO 24
2290 READ Q$
2300 DISPLAY AT(I,1):Q$ :: NEXT I
2310 RETURN
2320 DATA ;@AB   IJKLM @AB@AB,;CDE :: NOP  CDECDE      H,;FDGhijk  Q  FDGFDG   QIJKLM,;;X  lmn  RS  X  X Q  RSNOP
2330 DATA ;ZY[ H  @AB  ZY[ZY[RS@ABZY[,;;;IJKLMCDEQ    Q    CDE,;:: NOP FDGH :: RS H FDG ::
2340 DATA hijk X  cXc hijkQIJKLMX hijk,;lmnZY[`mmmo lmnRSNOPZY[ lmn,;;;;;;;;H;;;;;;;;;H;;;;;Q
2350 DATA ; ::  IJKLM     IJKLM:: RS,;hijkQ NOPQ     QNOPhijk  Q,; lmnRSZY[RS    RSYR lmn  rs
2360 DATA ;cabab   H   ::  :: Q   H  Q,`mmmmmoIJKLMhijkhijkRSIJKLMR,;       NOP  lmn lmn   NOP,;;H   Q   Q   Q @AB  Q
2370 DATA IJKLM RS  RS  RSCDE  RS::,;NOP H   @AB Q  FDG   hijk,;;XIJKLM CDE  Q  Xab   lmn
2380 DATA ;ZY[NOP  FDG :  `mmmo    H,;    X Q  X hik Q    Q IJKLM,;   ZY[RSZY[ ln RS   R  NOP
2390 DATA ; H                    Q,IJKLM :   Q  :: @AB    H  Q,;NOP hjkQ H hijkCDE  H   QR
2400 DATA Q X Q lnRS Q lmnFDGIJKLM ab,HZY[R            X  NOP `mmo,; :: Q          ZY[ ZY[
2410 DATA ;hijk                  Q,Q lmn                  RS::,RS H                    hijk,;IJKLM                   lmn
2420 DATA ;;NOP                   H,;QZY[Q                IJKLMQ,QRS  H                 NOP H,; ::                      Q
2430 DATA Qhijk                   : RS,R lmn                  hjk,@AB                     lnQ,CDE                       RS
2440 DATA FDG  H  @AB              @AB,;X IJKLMCDE              CDE,ZY[ NOP FDG  :        :: FDG
2450 DATA ;    X   X  hik   abchijk X,Q H ZY[Q`mmo lnQ`mmmmolmnZY[
2460 DATA Q   @AB  H  @AB Q    H,R   CDEIJKLMCDE RS IJKLM,;;H FDG:NOP FDG  :: NOP  ::,IJKLMXhik Q  X Qhijk Xabhijk
2470 DATA ;NOPZY[lnQRSZY[H lmn`mmmolmn,Q  Q     H       Q     H,RS H ::IJKLM     H ::IJKLM:,;abchijkNOPQ    Q hijkNOPhjk
2480 DATA `mmmolmnZY[H    RS lmnZY[ ln,;::   H     @ABQ@ABQ  :: QQ,hijkIJKLM   CDEHCDERShijkHRS,;lmn NOP :: FDG FDG H lmn
2490 DATA Q abc Q hijk Xc  XIJKLMabab,H`mmmoRS lmn`mmoZY[NOP`mmmmo,;Q   H  Q  Q     abc  Q   Q,;H IJKLMRS:H    `mmo H ::
2500 DATA Q  cNOP Qhjk    Q Q Q hijk Q,RS`mmmmoRSln    R H RS lmn R,@AB ::   H  Q@AB ::  :   H,CDEhijkIJKLMRCDEhijkhjkIJKLM
2510 DATA FDG lmn NOP  FDG lmn ln NOP,;Xab Q Q X QQ X Q       ZY[,`mmmoRSHZY[HRZY[RS Q QQQ
2520 SUB PUNKTE(PU)
2530 B$=STR$(PU) :: DISPLAY AT(1,23):SEG$(B$,2,6)
2540 SUBEND
